home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / TextEngineSystem.idl < prev    next >
Text File  |  1996-05-01  |  17KB  |  456 lines

  1. /*
  2.      File:        TextEngineSystem.idl
  3.  
  4.      Contains:    IDL interface for the TextEngineSystem class
  5.  
  6.      Version:    Technology:    8.0
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1995-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16. */
  17.  
  18.  
  19. #ifndef __TEXTENGINESYSTEM_IDL__
  20. #define __TEXTENGINESYSTEM_IDL__
  21.  
  22. #ifndef __CONDITIONALMACROS_IDL__
  23. #include <ConditionalMacros.idl>
  24. #endif
  25.  
  26. #include <somobj.idl>
  27. #include <somcls.idl>
  28.  
  29. #include <Types.idl>
  30. #include <Quickdraw.idl>
  31. #include <Collections.idl>
  32. #include <Drag.idl>
  33. #include <Events.idl>
  34. #include <AppleEvents.idl>
  35. #include <TextObjects.idl>
  36. #include <TextCommon.idl>
  37. #include <TextEdit.idl>
  38. #include <TextEngineTypes.idl>
  39.  
  40. interface TSystemTextEngine : SOMObject
  41. {
  42. // ======================================================
  43. // Initialization
  44. // ======================================================
  45.     
  46.     OSStatus InitTextInstance (in CGrafPtr port,in Rect bounds, 
  47.                                 in OptionBits textEngineOptions);
  48.  
  49.     
  50. // ======================================================
  51. // View and image rectangles 
  52. // ======================================================
  53.     
  54.     // rectangle where text will be formatted
  55.     // a null value in right or ottom means variable width/height
  56.     //variable height should always be supported
  57.     OSStatus SetTextFrameDimensions(in UInt32 width,  in UInt32 height) ;
  58.                             
  59.     OSStatus GetTextFrameDimensions(out UInt32 width,  out UInt32 height) ;
  60.     
  61.     // rectangle where text will be imaged
  62.     OSStatus SetTextViewFrame(in Rect viewFrameRect) ;
  63.             
  64.     OSStatus GetTextViewFrame(out Rect viewFrameRect) ;
  65.  
  66.     // rectangle contating offsets to to add to left top and remove from bottom right
  67.     //of the text frame
  68.     OSStatus SetTextMargins(in Rect marginOffsets) ;
  69.     
  70.     OSStatus GetTextMargins(out Rect marginOffsets) ;
  71.     //update the text in the given rectangle in QuickDraw coordinates (view)
  72.     //in the given CGrafPtr (assuming no refromatting is needed
  73.     //if formatting is needed you should call AboutToImage before
  74.     OSStatus RefreshText(in CGrafPtr whichPort,in Rect qDRectToUpdate) ;
  75.     
  76.     OSStatus EnableDrawingText();
  77.     OSStatus DisableDrawingText();
  78.     boolean  IsDrawingTextEnabled();
  79.     
  80.     //call this if your text is not wysiwyg, so it'll be reflowed according
  81.     //to the pageDimensions (pageDimensions should be the text Frame after computing
  82.     //the margins
  83.     //AboutToImage will save the state of the current text instance and
  84.     //reformat the text according to the new dimensions
  85.     //Be aware that updating the window between AboutToImage  and EndImaging
  86.     //(calling RefreshText with the window grafport) will result in wrong display.
  87.     OSStatus     AboutToImage( in Rect pageDimensions );
  88.     
  89.     //restore the text state to what it was before calling AboutToImage
  90.     OSStatus    EndImaging();
  91. //======================================================
  92. //    UI commmand
  93. //======================================================
  94.     
  95.     OSStatus EnableUICommand();
  96.     
  97.     OSStatus DisableUICommand();
  98.     
  99.     boolean IsUICommandEnabled();
  100.     
  101. //======================================================
  102.     OSStatus DoIDleAction();
  103. // ======================================================
  104. // Scrap and storage operations 
  105. // ======================================================
  106.     //Set the whole text from a standard format (text+scrap style table)
  107.     //this is the format every engine know to export / import
  108.     // but it doesn't contain any new attributes (lang,region,encoding)
  109.     OSStatus SetWholeTextTo(in Ptr textPtr , in ByteCount textSizeInBytes,
  110.                             in StScrpPtr styleScrapPtr) ;
  111.     
  112.     // get the size of the text
  113.     OSStatus GetWholeTextSize(out ByteCount textSizeInBytes);
  114.      
  115.     // copy all the text in textPtr , should retur memFullerr if storageSize< real text size
  116.     OSStatus WriteWholeTextToPtr(in Ptr textPtr , in ByteCount storageSize);
  117.     
  118.     // return the number of runs for a style scrap table to the whole text
  119.     OSStatus GetWholeScrapStyleCount(out ItemCount nRuns);
  120.  
  121.     // write the scrap style , should retur memFullerr if nRuns< real count of runs
  122.     OSStatus  WriteWholeScrapStyleToPtr(in StScrpPtr styleScrapPtr , in ItemCount nRuns);
  123.     
  124.     // get the size of a native format to be exported or saved
  125.     OSStatus GetStorageSizeForTextDataStructure(out ByteCount textInstanceStorageSizeInBytes);
  126.  
  127.     OSStatus SaveDataStructureToPtr(in Ptr theStorage, in ByteCount storageSizeAvailable);
  128.     
  129.     OSStatus ReadDataStructureFromPtr(in Ptr theStorage, in ByteCount storageSize);
  130.  
  131. // ======================================================
  132. // Text insertion/deletion/replacement 
  133. // ======================================================
  134.     
  135.     // replace the specified range (inclusive) by the given TextObject
  136.     // if the range to be deleted has unique language/region/encoding and the TextObject is mono-Run
  137.     //    with the same     language/region/encoding as the deleted range than the inserted text  will inherit
  138.     // the same attribute else new style run(s) will be created with the suitable attributes
  139.     OSStatus SetText(in ByteOffset startIndex, in ByteOffset endIndex, in TextObject theText );
  140.  
  141.     //special version of SetText to replace the selected text 
  142.     //(critical routine used for inserting from the user input)
  143.     OSStatus InsertText(in TextObject theText);
  144.  
  145.     OSStatus DeleteText(in ByteOffset startIndex, in ByteOffset endIndex)        ;
  146.     // detete the given range of text
  147.  
  148.     //should we have another that return a Ptr ???
  149.     OSStatus GetText( in ByteOffset startIndex, in ByteOffset endIndex ,out TextObject newTextObject );
  150.     
  151. // ======================================================
  152. // selection / Scrolling / height
  153. // ======================================================
  154.     
  155.     OSStatus SelectTextRange(in ByteOffset startIndex, in ByteOffset endIndex) ;
  156.     
  157.     OSStatus GetSelectedTextRange( out ByteOffset startIndex, out ByteOffset endIndex );
  158.  
  159.  
  160.     OSStatus RevealTextRange( in ByteOffset startIndex, in ByteOffset endIndex, in boolean revealBegin );
  161.  
  162.     OSStatus ScrollTextViewTo(in UInt32 dh, in UInt32 dv) ;
  163.     
  164.     OSStatus GetScroll(out UInt32 dh, out UInt32 dv) ;
  165.     
  166.     //height of all lines included in  the given range
  167.     OSStatus GetTextHeight(in ByteOffset startIndex, in ByteOffset endIndex,out UInt32 height) ;
  168.  
  169. // ======================================================
  170. // Text attributes 
  171. // ======================================================
  172.     // given one attribute set it value
  173.     //this is a low level API for getting & setting one attribute
  174.     OSStatus SetTextAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  175.                          in TextAttributeTag theAttribute,
  176.                          in void* theValuePtr, in ByteCount theValueSize);
  177.     
  178.     // Caller should allocate the data size (we assume that he knows the type of the value 
  179.     //he is asking for.
  180.     OSStatus GetTextAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  181.                          in TextAttributeTag theAttribute, 
  182.                          in ByteCount theAvailableSize,
  183.                          out void* theValuePtr, 
  184.                          out ByteCount theValueSize );
  185.  
  186.     
  187.     
  188. // ======================================================
  189. // attribute iteration routines 
  190. // ======================================================
  191.     OSStatus NewTextAttributeIterator( in ByteOffset startIndex, in ByteOffset endIndex, 
  192.                                         in Collection textAttributeFilterCollection, 
  193.                                         out TextAttributeIteratorRef iterationRef );
  194.     //    Create a Text Attribute iterator for the specified text range.
  195.     //    The application specifies the attributes of interest in a collection whose...
  196.     //        1.    'tags' are the attribute identifiers
  197.     //        2.    'collectionUser0Bit'of attribute if set specifies "wild card" value.
  198.     //        3.    'data' portion is value to match during iteration (if not wild card iteration).
  199.     //    The resulting iterator will allow the application to iterate over the text range, and identify
  200.     //    portions of the text which match (in value) the attributes specified in the original collection,
  201.     //    and/or iterate over different attribute runs for those attributes for which "wild card" is specified.
  202.     // The default iterator (nil collection) will iterate on every attribute change (always forward)
  203.  
  204.     OSStatus TextAttributeIterateForward( in TextAttributeIteratorRef iterationRef, 
  205.                                             out ByteOffset startIndex, out ByteOffset endIndex,
  206.                                             in Collection textAttrCollection );
  207.     
  208.     //should we add an iterate backward
  209.     
  210.     OSStatus DisposeTextAttributeIterator(in TextAttributeIteratorRef iterationRef) ;
  211.     
  212.     OSStatus SetTextCollectionAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  213.                          in Collection textAttrCollection);
  214.     //    For every attribute in the filter collection specified, set the attributes of the text Range to
  215.     //    the values specified in the collection.
  216.     
  217.     OSStatus GetSharedTextAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  218.                                      in Collection textAttrCollection );
  219.     //    Return all the attributes which are continuous over the specified text range.  Attributes which
  220.     //    are not continuous over the text range are not included in the collection returned.
  221.     
  222. // ======================================================
  223. // text  iteration routines 
  224. // ======================================================
  225.     OSStatus GetNextTextElement(in ByteOffset fromIndex,in TextIterationtype elmentType , out ByteOffset startIndex , out ByteOffset endIndex) ;
  226.  
  227.     OSStatus GetPriorTextElement(in ByteOffset fromIndex,in TextIterationtype elmentType, out ByteOffset startIndex , out ByteOffset endIndex) ;
  228.     
  229.     OSStatus GetEnclosingTextElement(in ByteOffset fromIndex,
  230.             in TextIterationtype elmentType,
  231.             out ByteOffset startIndex , 
  232.             out ByteOffset endIndex);
  233. // ======================================================
  234. // helpful offset to xxx routines 
  235. // ======================================================
  236.     //Point is in the local port coordinate
  237.     //and refer to the position of the character at ByteOffset (leading edge=true)
  238.     OSStatus ByteOffsetToPixel (in ByteOffset offset, out Point pixel);
  239.     
  240.     OSStatus PixelToByteOffset (in Point pixel ,out ByteOffset offset);
  241. //////////    
  242.     //word enclosing the given offset (error if not a word)
  243.     OSStatus ByteOffsetToWord (in ByteOffset offset, out ByteOffset startIndex , out ByteOffset endIndex);
  244.     
  245.     
  246.     //1 based
  247.     OSStatus NthWordInRange(in ByteOffset startRangeOffset ,in ByteOffset endRangeOffset,in ItemCount wordIndex, out ByteOffset startIndex , out ByteOffset endIndex);
  248.  
  249. //////////    
  250.     //LineNo are relative to all the text
  251.     //lines are dependant on layout informations
  252.     OSStatus LineToByteOffsets (in ItemCount lineNo , out ByteOffset startIndex , out ByteOffset endIndex);
  253.  
  254.     //lines are dependant on layout informations
  255.     OSStatus ByteOffsetToLine (in ByteOffset offset, out ItemCount lineNo);
  256. //////////    
  257.     
  258.     OSStatus ByteOffsetToParagraph (in ByteOffset offset, out ByteOffset paragraphStartIndex , out ByteOffset paragraphEndIndex);
  259. // ======================================================
  260. // helpful count elements routines  
  261. // ======================================================
  262.     OSStatus GetCountChars(in ByteOffset offset, out ByteOffset startIndex, out UInt32 charCount);
  263.     
  264.     OSStatus GetCountWords(in ByteOffset offset, out ByteOffset startIndex, out UInt32 wordCount);
  265.     
  266.     //lines are dependant on layout informations
  267.     OSStatus GetCountLines(in ByteOffset offset, out ByteOffset startIndex, out UInt32 lineCount);
  268.  
  269.     OSStatus GetCountParagraphs(in ByteOffset offset, out ByteOffset startIndex, out UInt32 paragraphCount);
  270. // ======================================================
  271. // edition commands ... need more investigation
  272. // ======================================================
  273.     //should always work on the global scrap
  274.     OSStatus Cut() ;
  275.     
  276.     OSStatus Copy() ;
  277.     
  278.     OSStatus Paste() ;
  279.     
  280.     boolean CanPaste() ;
  281.  
  282.     OSStatus Clear() ;
  283.     
  284.     OSStatus IsUndoActive(out boolean isActive, out EditCommandID theCommand);
  285.     
  286.     OSStatus UndoLastEditCommand();
  287.     
  288.     OSStatus DragEnteredViewedText(in DragReference theDrag,out boolean acceptIt) ;
  289.     
  290.     OSStatus DragInViewedText(in DragReference theDrag) ;
  291.  
  292.     OSStatus DragLeaveViewedText(in DragReference theDrag) ;
  293.     
  294.     OSStatus Drop(in DragReference theDrag) ;
  295.     
  296.     OSStatus GetHilileRegionHandle(out RgnHandle theRgn);
  297.     
  298.     OSStatus SetTextChangedFlag();
  299.     OSStatus ResetTextChangedFlag();
  300.     boolean  IsTextChanged();
  301.  
  302. // ======================================================
  303. // events,keyborad, command interface ... 
  304. //*** need interface for let the caller know that he needs to create a dragreference and
  305. //track it.
  306. // ======================================================
  307.     OSStatus MouseIsDown(in Point qdMouseCoordinate/*port relative*/,
  308.                             in EventModifiers modifiers,
  309.                             in AppleEvent theEvent, inout AppleEvent reply,in AEHandlerTableRef handlerTableRef);
  310.     
  311.     OSStatus MouseHasMoved(in Point qdMouseCoordinate/*port relative*/,
  312.                         in EventModifiers modifiers,
  313.                         in AppleEvent theEvent, inout AppleEvent reply,in AEHandlerTableRef handlerTableRef);
  314.  
  315.     OSStatus MouseStopped(in Point qdMouseCoordinate/*port relative*/,
  316.                         in EventModifiers modifiers,
  317.                         in AppleEvent theEvent, inout AppleEvent reply,in AEHandlerTableRef handlerTableRef);
  318.  
  319.     OSStatus MouseIsUp(in Point qdMouseCoordinate/*port relative*/,
  320.                         in EventModifiers modifiers,
  321.                         in AppleEvent theEvent, inout AppleEvent reply,in AEHandlerTableRef handlerTableRef);
  322.  
  323.  
  324.     //Handle the modern text event class.
  325.     OSStatus  HandleTextAEvent(in AEEventID eventID ,in AppleEvent appleEvent, inout AppleEvent reply,in AEHandlerTableRef handlerTableRef) ;
  326.     
  327.     OSStatus TextGainKeyboardFocus() ;
  328.     
  329.     OSStatus TextGiveUpKeyboardFocus() ;//should be called at window deactivation or should we add a WindowActivate method ??
  330.     
  331.     boolean HasKeyboardFocus();
  332.             
  333.     OSStatus TextInputObjectChanged(in LocaleIdentifier theLocaleID); 
  334.  
  335.  
  336.     OSStatus GetAETable(out AEHandlerTableRef theTable);// should return the list of AE the engine handles
  337.     
  338.     
  339. //click loop proc
  340.     OSStatus SetTextMouseDownTrackActionRoutine(in MouseDownInTextTrackProcPtr theMouseTrackProcPtr, in void* userData) ;
  341.  
  342.  
  343.     implementation {
  344.  
  345.         passthru C_h =     "#include <Types.h>"
  346.                         "#include <Collections.h>"
  347.                         "#include <Drag.h>"
  348.                         "#include <Events.h>"
  349.                         "#include <Quickdraw.h>"
  350.                         "#include <TextObjects.h>"
  351.                         "#include <MixedMode.h>"
  352.                         "#include <TextCommon.h>"
  353.                         "#include <TextEngineTypes.h>"
  354.                         "#include <TextEdit.h>" ; 
  355.  
  356.         passthru C_xh = "#include <Types.h>"
  357.                         "#include <Collections.h>"
  358.                         "#include <Drag.h>"
  359.                         "#include <Events.h>"
  360.                         "#include <Quickdraw.h>"
  361.                         "#include <TextObjects.h>"
  362.                         "#include <MixedMode.h>"
  363.                         "#include <TextCommon.h>"
  364.                         "#include <TextEngineTypes.h>"
  365.                         "#include <TextEdit.h>" ; 
  366.         
  367.         releaseorder:      InitTextInstance,
  368.                         SetTextFrameDimensions,
  369.                         GetTextFrameDimensions,
  370.                         SetTextViewFrame,
  371.                         GetTextViewFrame,
  372.                         SetTextMargins,
  373.                         GetTextMargins,
  374.                         RefreshText,
  375.                         EnableDrawingText,
  376.                         DisableDrawingText,
  377.                         IsDrawingTextEnabled,
  378.                         AboutToImage,
  379.                         EndImaging,
  380.                         SetWholeTextTo,
  381.                         GetWholeTextSize,
  382.                         WriteWholeTextToPtr,
  383.                         GetWholeScrapStyleCount,
  384.                         WriteWholeScrapStyleToPtr,
  385.                         GetStorageSizeForTextDataStructure,
  386.                         SaveDataStructureToPtr,
  387.                         ReadDataStructureFromPtr,
  388.                         SetText,
  389.                         InsertText,
  390.                         DeleteText,
  391.                         GetText,
  392.                         SelectTextRange,
  393.                         GetSelectedTextRange,
  394.                         RevealTextRange,
  395.                         ScrollTextViewTo,
  396.                         GetScroll,
  397.                         GetTextHeight,
  398.                         SetTextAttribute,
  399.                         GetTextAttribute,
  400.                         NewTextAttributeIterator,
  401.                         TextAttributeIterateForward,
  402.                         DisposeTextAttributeIterator,
  403.                         SetTextCollectionAttribute,
  404.                         GetSharedTextAttribute,
  405.                         GetNextTextElement,
  406.                         GetPriorTextElement,
  407.                         GetEnclosingTextElement,
  408.                         ByteOffsetToPixel,
  409.                         PixelToByteOffset,
  410.                         ByteOffsetToWord,
  411.                         NthWordInRange,
  412.                         LineToByteOffsets,
  413.                         ByteOffsetToLine,
  414.                         ByteOffsetToParagraph,
  415.                         GetCountChars,
  416.                         GetCountWords,
  417.                         GetCountLines,
  418.                         GetCountParagraphs,
  419.                         Cut,
  420.                         Copy,
  421.                         CanPaste,
  422.                         Paste,
  423.                         Clear,
  424.                         IsUndoActive,
  425.                         UndoLastEditCommand,
  426.                         DragEnteredViewedText,
  427.                         DragInViewedText,
  428.                         DragLeaveViewedText,
  429.                         Drop,
  430.                         SetTextChangedFlag,
  431.                         ResetTextChangedFlag,
  432.                         IsTextChanged,
  433.                         GetHilileRegionHandle,
  434.                         MouseIsDown,
  435.                         MouseStopped,
  436.                         MouseIsUp,
  437.                         MouseHasMoved,
  438.                         HandleTextAEvent,
  439.                         TextGainKeyboardFocus,
  440.                         TextGiveUpKeyboardFocus,
  441.                         HasKeyboardFocus,
  442.                         TextInputObjectChanged,
  443.                         GetAETable,
  444.                         SetTextMouseDownTrackActionRoutine,
  445.                         EnableUICommand,
  446.                         DisableUICommand,
  447.                         IsUICommandEnabled,
  448.                         DoIDleAction,
  449.                         reserved0,
  450.                         reserved1;
  451.     };
  452. };
  453.  
  454.  
  455. #endif //#ifndef __TEXTENGINESYSTEM_IDL__
  456.